import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Demo5 {
    public static void main(String[] args) {
        List<Item> items = Arrays.asList(
                new Item(5,2.0),
                new Item(1,1.2),
                new Item(4,1.5),
                new Item(3,1.3),
                new Item(2,1.1),
                new Item(2,2.1),
                new Item(2,3.1),
                new Item(2,4.1)
        );

        //定制排序
        Collections.sort(items,new ItemComparator());

        //排序后
        //items.forEach(System.out::println);
        for (Item item : items) {
            System.out.println(item);
        }
    }

    static class Item{
        int i;
        double j;

        public Item(int i,double j) {
            this.i = i;
            this.j = j;
        }

        @Override
        public String toString() {
            return "Item{" +
                    "i=" + i +
                    ", j=" + j +
                    '}';
        }
    }

    /**
     * 自定义的比较器
     */
    static class ItemComparator implements Comparator<Item> {

        @Override
        public int compare(Item o1, Item o2) {
            /*
            * 如果o1 > o2 ,返回 正数
            * 如果o1 < o2 ,返回 负数
            * 否则返回 0
            * */
            if (o1.i == o2.i) {
                //根据j排序
                if (o2.j > o1.j) return 1;
                else if (o2.j < o1.j) return -1;
                else return 0;
            } else {
                return o1.i - o2.i;
            }
        }
    }

}
